+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace SuperPolarity
+{
+ class Bullet : Actor
+ {
+ protected ParticleEngine particleEngine;
+ public int Power;
+
+ public Bullet(SuperPolarity newGame)
+ : base(newGame)
+ {
+ }
+
+ ~Bullet()
+ {
+ particleEngine = null;
+ }
+
+ public override void Initialize(Texture2D texture, Vector2 position)
+ {
+ base.Initialize(texture, position);
+ BoxDimensions.X = 10;
+ BoxDimensions.Y = 10;
+ BoxDimensions.W = 10;
+ BoxDimensions.Z = 10;
+ MaxVelocity = 8;
+ InitBox();
+ particleEngine = ParticleEffectFactory.CreateBullet(position);
+ }
+
+ public override void Update(GameTime gameTime)
+ {
+ Velocity.X = (float)(MaxVelocity * Math.Cos(Angle));
+ Velocity.Y = (float)(MaxVelocity * Math.Sin(Angle));
+
+ Power = 1;
+
+ Position += Velocity;
+ UpdateBox();
+
+ particleEngine.Update();
+ particleEngine.EmitterLocation = Position;
+ }
+
+ public override void Draw(SpriteBatch spriteBatch)
+ {
+ base.Draw(spriteBatch);
+ particleEngine.Draw(spriteBatch);
+ }
+
+ public override void Collide(Actor other, Rectangle collision)
+ {
+ if (Dying) { return; }
+ if (other.GetType().IsAssignableFrom(typeof(StandardShip)))
+ {
+ Die();
+ return;
+ }
+ }
+
+ protected override void Die()
+ {
+ ActorManager.CheckOut(this);
+ Renderer.CheckOut(this);
+ Parent.Children.Remove(this);
+ }
+
+ public override void CleanUp()
+ {
+ base.CleanUp();
+ this.particleEngine = null;
+ }
+ }
+}